class MyMath:
    @classmethod
    def add(cls, a, b):
        return a + b

    @classmethod
    def minus(cls, a, b):
        return a - b

    @classmethod
    def multi(cls, a, b):
        return a * b

    @classmethod
    def div(cls, a, b):
        return a / b

    @classmethod
    def pow(cls, a, b):
        return a ** b

    @classmethod
    def sqrt(cls, a):
        return a ** 0.5


print(MyMath.add(1, 2))
print(MyMath.minus(1, 2))
print(MyMath.multi(1, 2))
print(MyMath.div(1, 2))
print(MyMath.pow(3, 2))
print(MyMath.sqrt(2))


class Person:
    prop = 'Person Property'
    __prop = 'Private Person Property'

    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    @classmethod
    def print_props(cls):
        print('Prop: {}, Private Prop: {}'.format(cls.prop, cls.__prop))

    def __str__(self):
        return '<Person name: {}, age: {}>'.format(self.__name, self.__age)


class Student(Person):
    def __init__(self, name, age, class_no):
        super().__init__(name, age)
        self.__class_no = class_no


Person.print_props()

mike = Student('Mike', 23, 1)
jame = Student('Jame', 22, 2)

print(mike)
print(jame)